/**
 * <p>Title: UserGroupRest</p>
 * <p>Description: The Interface of User Group Svc</p>
 * <p>Copyright: Shanghai Batchsight Pharmaceutical Technologies, Inc. Copyright(c) 2016</p>
 * @author Zuo Yefeng
 * @version 1.0
 * <pre>Histroy:
 *       2016-11-23  Zuo Yefeng  Create
 *</pre>
*/
package cn.jhg.account.rest;

import java.util.List;

import javax.ws.rs.DELETE;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

import cn.jhg.account.entity.User;
import cn.jhg.account.entity.UserGroup;
import cn.jhg.account.util.ServiceResult;

@Path("/userGroups")
public interface UserGroupRest {

	 /**
     * 查找用户组
     * @param code		用户组编号（等于空表示全部）
     * @param name		用户组名（等于空表示全部）
     * @param valid	用户组失效  Valid, Invalid, 空（等于空表示全部）
     * @return
     */
    @Path("/find")
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public ServiceResult<List<UserGroup>> findUserGroups(@QueryParam("code") String code,
    		@QueryParam("name") String name,
    		@QueryParam("valid") String valid);     // valid, invalid
    
    /**
     * 添加用户组
     * @param code		用户组编号
     * @param name      用户组名
     * @param description     用户组说明
     * @param status 	用户组状态(VALID：有效,INVALID：失效)
     * @return			添加用户组ID
     */
    @Path("/add")
    @POST
    @Produces(MediaType.APPLICATION_JSON)
    public ServiceResult<Integer> addUserGroup(@FormParam("sdid")  int sdid,
    		@FormParam("code") String code,
    		@FormParam("name") String name,
    		@FormParam("description") String description);
    
    /**
     * 修改用户组
     * @Param id		用户组ID
     * @param code		用户组编号
     * @param name      用户组名
     * @param description     用户组说明
     * @param status 	用户组状态(VALID：有效,INVALID：失效)
     * @return			errorCode
     */
    @Path("/update")
    @PUT
    @Produces(MediaType.APPLICATION_JSON)
    public ServiceResult<Integer> updateUserGroup(@FormParam("sdid")  int sdid,
    		@FormParam("id") int id,
    		@FormParam("code") String code,
    		@FormParam("name") String name,
    		@FormParam("description") String description
    		);
    /**
     * 失效用户组
     * @Param id		用户组ID
     * @retrun ErrorCode
     */
    @Path("/invalid")
    @PUT
    @Produces(MediaType.APPLICATION_JSON)
    public ServiceResult<Integer> invalidUserGroup(@FormParam("sdid")  int sdid,
    		@FormParam("id") int id);
    
    /**
     * 查找用户组成员
     * @param id		用户组id
     * @return
     */
    @Path("/get/users")
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public ServiceResult<List<User>> findUserGroupUsers(@QueryParam("id") int id);
    
    /**
     * 添加用户组成员
     * @param id		用户组id
     * @param uids   用户id集合      
     * @param sid   	 签名id
     * @param iuid 		用户id
     * @return			添加用户组ID
     */
    @Path("/addMember")
    @POST
    @Produces(MediaType.APPLICATION_JSON)
    public ServiceResult<Integer> addMember(@FormParam("id") int id,
    		@FormParam("uidList") List<Integer> uids,
    		@FormParam("sdid") int sdid);
    
    
    /**
     * 删除用户组成员
     * @param id		用户组id
     * @param uids   用户id集合      
     * @param sid   	 签名id
     * @param iuid 		用户id
     * @return			添加用户组ID
     */
    @Path("/deleteMember")
    @DELETE
    @Produces(MediaType.APPLICATION_JSON)
    public ServiceResult<Integer> deleteMember(@FormParam("id") int id,
    		@FormParam("uidList")  List<Integer> uids,
    		@FormParam("sdid") int sdid);
   
    
}
